package com.uzai.console.service.wxpubmanage;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.uzai.console.dto.BaseDto;
import com.uzai.console.dto.wxpub.DeviceWxpubInfoBuyAuthDto;
import com.uzai.console.dto.wxpub.PriceDto;
import com.uzai.console.dto.wxpub.WxpubAmountDto;
import com.uzai.console.dto.wxpubmanage.WxpubDeviceBindDto;
import com.uzai.console.dto.wxpubmanage.WxpubDeviceListQuery;
import com.uzai.console.dto.wxpubmanage.WxpubAddAuthFreeDto;
import com.uzai.console.dto.wxpubmanage.WxpubInfoDeleteDto;
import com.uzai.console.dto.wxpubmanage.WxpubInfoDto;
import com.uzai.console.dto.wxpubmanage.WxpubInfoListQuery;
import com.uzai.console.dto.wxpubmanage.WxpubInfoUpdateDto;
import com.uzai.console.dto.wxpubmanage.WxpubInfoUpdateSingleDto;
import com.uzai.console.dto.wxpubmanage.WxpubMenuDto;
import com.uzai.console.dto.wxpubmanage.WxpubPosterDto;
import com.uzai.console.entity.wxpubmanage.WxpubInfoEntity;
import com.uzai.console.vo.wechatprivate.devicewechatinfo.DeviceAmountVo;
import com.uzai.console.vo.wxpub.*;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * @Author cen
 * @Date 2022/3/22 0022 10:16
 */
public interface WxpubInfoService {

    WxpubInfoEntity queryObject(Long id );

    Page<WxpubInfoEntity> queryList(WxpubInfoListQuery dto);

    void updateList(WxpubInfoUpdateDto dto);

    void addObject(WxpubInfoDto dto);

    AuthUrlVo queryAuthUrl(BaseDto dto);

    void deleteList(WxpubInfoDeleteDto wxpubInfoDeleteDto);

    Page<DeviceInfoVo> queryDeviceInfo(WxpubDeviceListQuery dto);

    void bindDeviceList(WxpubDeviceBindDto wxpubDeviceBindDto);

    void bindAllDeviceList(WxpubDeviceListQuery wxpubDeviceListQuery);

    WxpubMenuVo menuQuery(WxpubAddAuthFreeDto wxpubIdDto);

    void menuUpdate(WxpubMenuDto wxpubMenuDto);

    /**
     * 查询购买公众号授权价格
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param priceDto
     */
    PriceVo getPrice(PriceDto priceDto);

    /**
     * 购买授权
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param deviceWxpubInfoBuyAuthDto
     */
    DeviceWxpubInfoAddVo buyDeviceAuth(DeviceWxpubInfoBuyAuthDto deviceWxpubInfoBuyAuthDto);

    /**
     * 查询购买总金额
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wxpubAmountDto
     */
    DeviceAmountVo getAmount(WxpubAmountDto wxpubAmountDto);

    /**
     * 添加微信公众号免费试用期授权
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wxpubAddAuthFreeDto
     */
    void addWxpubAuthFree(@RequestBody WxpubAddAuthFreeDto wxpubAddAuthFreeDto);

    void updateWxpubObject(WxpubInfoUpdateSingleDto wxpubInfoUpdateDto);

    void posterUpdate(WxpubPosterDto wxpubPosterDto);
}
